<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
<html>
  <head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <title>SF</title>
    <style>
        body{
            margin: 0;
        }
        #content-info{
            width: auto;
            margin: 0 auto;
            text-align: center;
        }
        #author-info{
            white-space: nowrap;
            text-overflow: ellipsis;
            overflow: hidden;
        }
        #title{
            text-overflow: ellipsis;
            white-space: nowrap;
            overflow: hidden;
            padding-top: 10px;
            margin-bottom: 2px;
            font-size: 34px;
            color: #505050;
        }
        .text{
            white-space:nowrap;
            text-overflow: ellipsis;
            display: inline-block;
            margin-right: 20px;
            margin-bottom: 2px;
            font-size: 20px;
            color: #8c8c8c;
        }
        #navBar{
            position: fixed;
            right:0;
            bottom: 0;
            background-color: #f0f3f4;
            overflow-y: auto;
            text-align: center;
        }
        #svg-container{
            width: 100%;
            min-width: 0;
            margin: 0 10px;
        }
        #nav-thumbs{
            padding: 0 5px;
        }
        .nav-thumb{
            position: relative;
            margin: 10px auto;
        }
        .nav-thumb >p{
            text-align: center;
            font-size: 12px;
            margin: 4px 0 0 0;
        }
        .nav-thumb >div{
            position: relative;
            display: inline-block;
            border: 1px solid #c6cfd5;
        }
        .nav-thumb img{
            display: block;
        }
        .nav-thumb span{
            pointer-events: none;
        }
        #main-content{
            bottom: 0;
            left: 0;
            right: 0;
            background-color: #d0cfd8;
            display: flex;
            height: auto;
            flex-flow: row wrap;
            text-align:center;
        }
        #svg-container >svg{
            display: block;
            margin:10px auto;
            margin-bottom: 0;
        }
        #copyright{
            bottom: 0;
            left: 50%;
            margin: 5px auto;
            font-size: 16px;
            color: #515151;
        }
        #copyright >a{
            text-decoration: none;
            color: #77C;
        }
        .number{
            position: absolute;
            top:0;
            left:0;
            border-top:22px solid #76838f;
            border-right: 22px solid transparent;
        }
        .pagenum{
            font-size: 12px;
            color: #fff;
            position: absolute;
            top: -23px;
            left: 2px;
        }
        #navBar::-webkit-scrollbar{
            width: 8px;
            background-color: #f5f5f5;
        }
        #navBar::-webkit-scrollbar-track{
            -webkit-box-shadow: inset 0 0 4px rgba(0,0,0,.3);
            border-radius: 8px;
            background-color: #fff;
        }
        #navBar::-webkit-scrollbar-thumb{
            border-radius: 8px;
            -webkit-box-shadow: inset 0 0 4px rgba(0,0,0,.3);
            background-color: #6b6b70;
        }
        #navBar::-webkit-scrollbar-thumb:hover{
            background-color: #4a4a4f;
        }
        .nav-thumb >div:hover{
            box-shadow:1px 1px 4px rgba(0,0,0,.4);
        }
        .selected .number{
            border-color: #08a1ef transparent;
        }
</style>
  </head>
  <body>
    <div id="main-area">
      <div id="content-info"></div>
      <div id="main-content">
        <div id="svg-container"><svg width="2245" xmlns="http://www.w3.org/2000/svg" height="2381" viewBox="0 0 2245 2381" preserveAspectRadio="xMinYMin meet" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" id="page1"><style type="text/css"><![CDATA[
.st3 {fill:#2d85c1;font-family:宋体;font-size:6.75pt}
.st2 {fill:#ffffff;font-family:宋体;font-size:7.5pt}
.st1 {fill:#ffffff;font-family:宋体;font-size:9pt}
]]></style><defs/><rect x="0" width="2245" fill="#ffffff" stroke="#808080" y="0" height="2381"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,-480.5" id="shape1"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,710.05)" d="M0,0L8,0L8,91C8,94.6,10.4,97,14,97L20,97" id="shape2"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,-348.5" id="shape3"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,842.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape4"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,710.05)" d="M0,0L8,0L8,65C8,68.6,10.4,71,14,71L20,71" id="shape5"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,710.05)" d="M0,0L8,0L8,-53C8,-56.6,10.4,-59,14,-59L20,-59" id="shape6"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,710.05)" d="M0,0L8,0L8,11C8,14.6,10.4,17,14,17L20,17" id="shape7"/><path fill="none" stroke="#2d85c1" transform="translate(1305.26,727.05)" d="M0,0L8,0L8,-44C8,-47.6,10.4,-50,14,-50L20,-50" id="shape8"/><path fill="none" stroke="#2d85c1" transform="translate(1305.26,727.05)" d="M0,0L8,0L8,-18C8,-21.6,10.4,-24,14,-24L20,-24" id="shape9"/><path fill="none" stroke="#2d85c1" transform="translate(1305.26,727.05)" d="M0,0L8,0C8,1.2,8.8,2,10,2L20,2" id="shape10"/><path fill="none" stroke="#2d85c1" transform="translate(1305.26,727.05)" d="M0,0L8,0L8,22C8,25.6,10.4,28,14,28L20,28" id="shape11"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,254.5" id="shape12"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1445.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape13"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1445.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape14"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,153.5" id="shape15"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,1344.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape16"/><path fill="none" stroke="#2d85c1" transform="translate(741.26,1344.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape17"/><path fill="none" stroke="#2d85c1" transform="translate(859.26,1326.05)" d="M0,0L8,0L8,-7C8,-10.6,10.4,-13,14,-13L20,-13" id="shape18"/><path fill="none" stroke="#2d85c1" transform="translate(859.26,1326.05)" d="M0,0L8,0L8,7C8,10.6,10.4,13,14,13L20,13" id="shape19"/><path fill="none" stroke="#2d85c1" transform="translate(863.26,1378.05)" d="M0,0L8,0L8,-7C8,-10.6,10.4,-13,14,-13L20,-13" id="shape20"/><path fill="none" stroke="#2d85c1" transform="translate(863.26,1378.05)" d="M0,0L8,0L8,7C8,10.6,10.4,13,14,13L20,13" id="shape21"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,1514.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape22"/><path fill="none" stroke="#2d85c1" transform="translate(781.26,1522.05)" d="M0,0L8,0C8,0,8,0,8,0L20,0" id="shape23"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,-279.5" id="shape24"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,911.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape25"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,911.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape26"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,911.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape27"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,-165.5" id="shape28"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1025.05)" d="M0,0L8,0L8,-38C8,-41.6,10.4,-44,14,-44L20,-44" id="shape29"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1025.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape30"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1025.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape31"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1025.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape32"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1025.05)" d="M0,0L8,0L8,54C8,57.6,10.4,60,14,60L20,60" id="shape33"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,.5" id="shape34"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,-64C8,-67.6,10.4,-70,14,-70L20,-70" id="shape35"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,-38C8,-41.6,10.4,-44,14,-44L20,-44" id="shape36"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape37"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape38"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape39"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,54C8,57.6,10.4,60,14,60L20,60" id="shape40"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1191.05)" d="M0,0L8,0L8,80C8,83.6,10.4,86,14,86L20,86" id="shape41"/><path fill="none" stroke="#2d85c1" transform="translate(937.26,1121.05)" d="M0,0L8,0C8,0,8,0,8,0L20,0" id="shape42"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1445.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape43"/><path fill="none" stroke="#2d85c1" transform="translate(871.26,1479.05)" d="M0,0L8,0C8,0,8,0,8,0L20,0" id="shape44"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,323.5" id="shape45"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,392.5" id="shape46"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,1583.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape47"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,1583.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape48"/><path fill="none" stroke="#2d85c1" transform="translate(701.26,1583.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape49"/><path fill="none" stroke="#2d85c1" transform="translate(561.26,1190.55)" d="M0,0L96,480.5" id="shape50"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1671.05)" d="M0,0L8,0L8,-12C8,-15.6,10.4,-18,14,-18L20,-18" id="shape51"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1671.05)" d="M0,0L8,0L8,2C8,5.6,10.4,8,14,8L20,8" id="shape52"/><path fill="none" stroke="#2d85c1" transform="translate(721.26,1671.05)" d="M0,0L8,0L8,28C8,31.6,10.4,34,14,34L20,34" id="shape53"/><a><g transform="translate(505.26,1172.55)"><g id="shape54"><path fill="#3498db" stroke="#3498db" d="M6.5,0L105.5,0C109.1,0,112,2.9,112,6.5L112,29.5C112,33.1,109.1,36,105.5,36L6.5,36C2.9,36,0,33.1,0,29.5L0,6.5C0,2.9,2.9,0,6.5,0z"/></g><text class="st1"><tspan x="16" y="22">Platform Event</tspan></text></g></a><g transform="translate(657.26,695.05)"><g id="shape55"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L78.6,0C81.6,0,84,2.4,84,5.4L84,24.6C84,27.6,81.6,30,78.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">Event-Driven</tspan></text></g><g transform="translate(761.26,791.05)"><g id="shape56"><path fill="none" stroke="#2d85c1" d="M0,16L138,16"/></g><text class="st3"><tspan x="5" y="13">松散耦合、基于事件的集成模式</tspan></text></g><g transform="translate(657.26,827.05)"><g id="shape57"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L58.6,0C61.6,0,64,2.4,64,5.4L64,24.6C64,27.6,61.6,30,58.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">发布时间</tspan></text></g><g transform="translate(741.26,834.05)"><g id="shape58"><path fill="none" stroke="#2d85c1" d="M0,16L166,16"/></g><text class="st3"><tspan x="5" y="13">release of Platform Events in 2017</tspan></text></g><g transform="translate(761.26,765.05)"><g id="shape59"><path fill="none" stroke="#2d85c1" d="M0,16L192,16"/></g><text class="st3"><tspan x="5" y="13">构建可伸缩的、事件驱动的应用程序体系结构</tspan></text></g><g transform="translate(761.26,613.05)"><g id="shape60"><path fill="none" stroke="#2d85c1" d="M0,38L588,38"/></g><text class="st3"><tspan x="4" y="13">Event-driven architectures are very different in that they are designed to loosen the tight coupling between internal services. </tspan><tspan x="4" y="24">It shifts the responsibility of processing onto the responding service rather than the requesting service.</tspan><tspan x="4" y="35">This architecture is built around the concept of events.</tspan></text></g><g transform="translate(761.26,689.05)"><g id="shape61"><path fill="none" stroke="#2d85c1" d="M0,38L544,38"/></g><text class="st3"><tspan x="4" y="13">An event-driven (or message-driven) software architecture consists of event producers, event consumers, and channels. </tspan><tspan x="4" y="24">The architecture is suitable for large distributed systems because it decouples event producers from event consumers, </tspan><tspan x="4" y="35">thereby simplifying the communication model in connected systems</tspan></text></g><g transform="translate(1325.26,661.05)"><g id="shape62"><path fill="none" stroke="#2d85c1" d="M0,16L70,16"/></g><text class="st3"><tspan x="5" y="13">Event message</tspan></text></g><g transform="translate(1325.26,687.05)"><g id="shape63"><path fill="none" stroke="#2d85c1" d="M0,16L76,16"/></g><text class="st3"><tspan x="5" y="13">Event producer</tspan></text></g><g transform="translate(1325.26,713.05)"><g id="shape64"><path fill="none" stroke="#2d85c1" d="M0,16L40,16"/></g><text class="st3"><tspan x="5" y="13">Channe</tspan></text></g><g transform="translate(1325.26,739.05)"><g id="shape65"><path fill="none" stroke="#2d85c1" d="M0,16L76,16"/></g><text class="st3"><tspan x="5" y="13">Event consumer</tspan></text></g><image width="316" x="0" y="0" height="178" xlink:href="" transform="translate(998,826.63)" id="shape66" preserveAspectRatio="none"/><g transform="translate(657.26,1430.05)"><g id="shape67"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L58.6,0C61.6,0,64,2.4,64,5.4L64,24.6C64,27.6,61.6,30,58.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">标准事件</tspan></text></g><g transform="translate(741.26,1411.05)"><g id="shape68"><path fill="none" stroke="#2d85c1" d="M0,16L80,16"/></g><text class="st3"><tspan x="5" y="13">AssetTokenEvent</tspan></text></g><g transform="translate(741.26,1437.05)"><g id="shape69"><path fill="none" stroke="#2d85c1" d="M0,16L98,16"/></g><text class="st3"><tspan x="5" y="13">BatchApexErrorEvent</tspan></text></g><g transform="translate(657.26,1329.05)"><g id="shape70"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L78.6,0C81.6,0,84,2.4,84,5.4L84,24.6C84,27.6,81.6,30,78.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">Transactions</tspan></text></g><g transform="translate(761.26,1310.05)"><g id="shape71"><path fill="none" stroke="#2d85c1" d="M0,16L98,16"/></g><text class="st3"><tspan x="5" y="13">Publish Immediately</tspan></text></g><g transform="translate(761.26,1362.05)"><g id="shape72"><path fill="none" stroke="#2d85c1" d="M0,16L102,16"/></g><text class="st3"><tspan x="5" y="13">Publish After Commit</tspan></text></g><g transform="translate(879.26,1297.05)"><g id="shape73"><path fill="none" stroke="#2d85c1" d="M0,16L390,16"/></g><text class="st3"><tspan x="5" y="13">不能回滚已发布的事件消息，并且不支持Apex setSavepoint（）和roll back（）数据库类方法</tspan></text></g><g transform="translate(879.26,1323.05)"><g id="shape74"><path fill="none" stroke="#2d85c1" d="M0,16L400,16"/></g><text class="st3"><tspan x="5" y="13">当通过api发布时，allOrNone头被忽略。即使其他事件在同一个调用中失败，也可以发布某些事件</tspan></text></g><g transform="translate(883.26,1349.05)"><g id="shape75"><path fill="none" stroke="#2d85c1" d="M0,16L454,16"/></g><text class="st3"><tspan x="5" y="13">allOrNone头值生效。如果allOrNone设置为true，则如果同一调用中至少有一个事件失败，则不会发布任何事件</tspan></text></g><g transform="translate(883.26,1375.05)"><g id="shape76"><path fill="none" stroke="#2d85c1" d="M0,16L364,16"/></g><text class="st3"><tspan x="5" y="13">您可以使用Apex setSavepoint（）和roll back（）数据库类方法回滚已发布的事件消息</tspan></text></g><g transform="translate(721.26,1506.05)"><g id="shape77"><path fill="none" stroke="#2d85c1" d="M0,16L60,16"/></g><text class="st3"><tspan x="9" y="13">Event Bus</tspan></text></g><g transform="translate(801.26,1506.05)"><g id="shape78"><path fill="none" stroke="#2d85c1" d="M0,16L580,16"/></g><text class="st3"><tspan x="5" y="13">大容量平台事件消息存储72小时（3天）。标准卷平台事件消息存储24小时（1天）。当使用CometD客户端订阅通道时，可以检索过去的事件消息</tspan></text></g><g transform="translate(657.26,896.05)"><g id="shape79"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L38.6,0C41.6,0,44,2.4,44,5.4L44,24.6C44,27.6,41.6,30,38.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">创建</tspan></text></g><g transform="translate(721.26,877.05)"><g id="shape80"><path fill="none" stroke="#2d85c1" d="M0,16L130,16"/></g><text class="st3"><tspan x="5" y="13">在系统中创建跟Sobject 相同</tspan></text></g><g transform="translate(721.26,903.05)"><g id="shape81"><path fill="none" stroke="#2d85c1" d="M0,16L76,16"/></g><text class="st3"><tspan x="5" y="13">有限的字段类型</tspan></text></g><g transform="translate(721.26,929.05)"><g id="shape82"><path fill="none" stroke="#2d85c1" d="M0,16L84,16"/></g><text class="st3"><tspan x="5" y="13">唯一键：ReplayId</tspan></text></g><g transform="translate(657.26,1010.05)"><g id="shape83"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L58.6,0C61.6,0,64,2.4,64,5.4L64,24.6C64,27.6,61.6,30,58.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">发布事件</tspan></text></g><g transform="translate(741.26,965.05)"><g id="shape84"><path fill="none" stroke="#2d85c1" d="M0,16L178,16"/></g><text class="st3"><tspan x="5" y="13">Publish Event Messages with Processes</tspan></text></g><g transform="translate(741.26,991.05)"><g id="shape85"><path fill="none" stroke="#2d85c1" d="M0,16L160,16"/></g><text class="st3"><tspan x="5" y="13">Publish Event Messages with Flows</tspan></text></g><g transform="translate(741.26,1017.05)"><g id="shape86"><path fill="none" stroke="#2d85c1" d="M0,16L156,16"/></g><text class="st3"><tspan x="5" y="13">Publish Event Messages with Apex</tspan></text></g><g transform="translate(741.26,1043.05)"><g id="shape87"><path fill="none" stroke="#2d85c1" d="M0,16L206,16"/></g><text class="st3"><tspan x="5" y="13">Publish Event Messages with Salesforce APIs</tspan></text></g><g transform="translate(741.26,1069.05)"><g id="shape88"><path fill="none" stroke="#2d85c1" d="M0,16L238,16"/></g><text class="st3"><tspan x="5" y="13">Get Notified of Asynchronous Publish Errors (Beta)</tspan></text></g><g transform="translate(657.26,1176.05)"><g id="shape89"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L58.6,0C61.6,0,64,2.4,64,5.4L64,24.6C64,27.6,61.6,30,58.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">定阅事件</tspan></text></g><g transform="translate(741.26,1105.05)"><g id="shape90"><path fill="none" stroke="#2d85c1" d="M0,16L196,16"/></g><text class="st3"><tspan x="5" y="13">Set Up Debug Logs for Event Subscriptions</tspan></text></g><g transform="translate(741.26,1131.05)"><g id="shape91"><path fill="none" stroke="#2d85c1" d="M0,16L242,16"/></g><text class="st3"><tspan x="5" y="13">Subscribe to Platform Event Messages with Processes</tspan></text></g><g transform="translate(741.26,1157.05)"><g id="shape92"><path fill="none" stroke="#2d85c1" d="M0,16L224,16"/></g><text class="st3"><tspan x="5" y="13">Subscribe to Platform Event Messages with Flows</tspan></text></g><g transform="translate(741.26,1183.05)"><g id="shape93"><path fill="none" stroke="#2d85c1" d="M0,16L282,16"/></g><text class="st3"><tspan x="5" y="13">Subscribe to Platform Event Notifications with Apex Triggers</tspan></text></g><g transform="translate(741.26,1209.05)"><g id="shape94"><path fill="none" stroke="#2d85c1" d="M0,16L310,16"/></g><text class="st3"><tspan x="5" y="13">Subscribe to Platform Event Notifications in a Lightning Component</tspan></text></g><g transform="translate(741.26,1235.05)"><g id="shape95"><path fill="none" stroke="#2d85c1" d="M0,16L250,16"/></g><text class="st3"><tspan x="5" y="13">Subscribe to Platform Event Notifications with CometD</tspan></text></g><g transform="translate(741.26,1261.05)"><g id="shape96"><path fill="none" stroke="#2d85c1" d="M0,16L184,16"/></g><text class="st3"><tspan x="5" y="13">Obtain a Platform Event’s Subscribers</tspan></text></g><g transform="translate(957.26,1105.05)"><g id="shape97"><path fill="none" stroke="#2d85c1" d="M0,16L88,16"/></g><text class="st3"><tspan x="5" y="13">Automated Process</tspan></text></g><g transform="translate(741.26,1463.05)"><g id="shape98"><path fill="none" stroke="#2d85c1" d="M0,16L130,16"/></g><text class="st3"><tspan x="5" y="13">Real-Time Event Monitoring</tspan></text></g><g transform="translate(891.26,1463.05)"><g id="shape99"><path fill="none" stroke="#2d85c1" d="M0,16L84,16"/></g><text class="st3"><tspan x="5" y="13">LoginEventStream</tspan></text></g><g transform="translate(657.26,1499.05)"><g id="shape100"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L38.6,0C41.6,0,44,2.4,44,5.4L44,24.6C44,27.6,41.6,30,38.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">限制</tspan></text></g><image width="446" x="0" y="0" height="224" xlink:href="" transform="translate(701.26,1754.99)" id="shape101" preserveAspectRatio="none"/><image width="550" x="0" y="0" height="192" xlink:href="" transform="translate(1191.74,1754.99)" id="shape102" preserveAspectRatio="none"/><g transform="translate(657.26,1568.05)"><g id="shape103"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L38.6,0C41.6,0,44,2.4,44,5.4L44,24.6C44,27.6,41.6,30,38.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">资源</tspan></text></g><g transform="translate(721.26,1549.05)"><g id="shape104"><path fill="none" stroke="#2d85c1" d="M0,16L502,16"/></g><text class="st3"><tspan x="5" y="13">https://www.slideshare.net/JohnBrock11/trailheadx-2019-explore-new-frontiers-with-high-volume-platform-events</tspan></text></g><image width="536" x="0" y="0" height="301" xlink:href="" transform="translate(1339.4,837.2)" id="shape105" preserveAspectRatio="none"/><g transform="translate(721.26,1575.05)"><g id="shape106"><path fill="none" stroke="#2d85c1" d="M0,16L372,16"/></g><text class="st3"><tspan x="5" y="13">https://trailhead.salesforce.com/en/content/learn/modules/platform_events_basics</tspan></text></g><g transform="translate(721.26,1601.05)"><g id="shape107"><path fill="none" stroke="#2d85c1" d="M0,16L508,16"/></g><text class="st3"><tspan x="5" y="13">https://developer.salesforce.com/blogs/2020/04/event-driven-app-architecture-on-the-customer-360-platform.html</tspan></text></g><g transform="translate(657.26,1656.05)"><g id="shape108"><path fill="#1bbc9d" stroke="#1bbc9d" d="M5.4,0L58.6,0C61.6,0,64,2.4,64,5.4L64,24.6C64,27.6,61.6,30,58.6,30L5.4,30C2.4,30,0,27.6,0,24.6L0,5.4C0,2.4,2.4,0,5.4,0z"/></g><text class="st2"><tspan x="14" y="19">使用场景</tspan></text></g><g transform="translate(741.26,1637.05)"><g id="shape109"><path fill="none" stroke="#2d85c1" d="M0,16L48,16"/></g><text class="st3"><tspan x="5" y="13">用于集成</tspan></text></g><g transform="translate(741.26,1663.05)"><g id="shape110"><path fill="none" stroke="#2d85c1" d="M0,16L66,16"/></g><text class="st3"><tspan x="5" y="13">用于异步处理</tspan></text></g><g transform="translate(741.26,1689.05)"><g id="shape111"><path fill="none" stroke="#2d85c1" d="M0,16L48,16"/></g><text class="st3"><tspan x="5" y="13">日志记录</tspan></text></g></svg></div>
      </div>
      <div id="navBar">
        <div id="nav-thumbs"/>
      </div>
    </div>
    <script>
        const svgs=document.getElementById("svg-container").children;
        const UA=window.navigator.userAgent;
        const ua=(UA.indexOf('rv:11')+UA.indexOf('Firefox'))>=0;
        const svgcount=document.getElementById('svg-container').childElementCount;
        var styleArr=[];
        var heightArr=[];
        var navBar=document.getElementById('navBar');
        var conInfo=document.getElementById('content-info');
        for(var i=0;i<svgcount;i++){
            styleArr[i] = {width:svgs[i].getAttribute('width'),height:svgs[i].getAttribute('height')}
        }
        window.onresize=function () {
            renavstyle();
            resvgstyle();
        };
        window.onscroll=renavstyle;
        window.onload=function () {
            renavstyle();
            var sideWidth=navBar.offsetWidth;
            document.getElementById('content-info').style.marginRight=sideWidth+'px';
            document.getElementById('main-content').style.marginRight=sideWidth+'px';
            resvgstyle();
            doscroll();
        };
        function recontainstyle() {
            var topHeight=conInfo.clientHeight;
            var svgHeight=0;
            for(var i=0;i<svgcount;i++){
                heightArr[i]=svgs[i].getBoundingClientRect().height+10;
                svgHeight+=svgs[i].clientHeight ||svgs[i].getBoundingClientRect().height;
            }
            var fullHeight=svgHeight+Number(topHeight);
            if(fullHeight<window.innerHeight){
            document.getElementById('main-content').style.position='absolute';
            document.getElementById('main-content').style.top=topHeight+'px';
        }else{
            document.getElementById('main-content').style.position='';
        }
        }
        function resvgstyle() {
            var sideWidth=navBar.offsetWidth+20;
            for(var i=0;i<svgcount;i++){
                var oriWidth = styleArr[i].width;
                var oriHeight = styleArr[i].height;
                var percent = oriHeight / oriWidth;
                var innerWidth=document.body.offsetWidth-sideWidth;
                if (innerWidth <= oriWidth) {
                    svgs[i].removeAttribute('width');
                    svgs[i].removeAttribute('height');
                    if (ua) {
                        svgs[i].setAttribute('height',innerWidth*percent);
                    }
                }else {
                    svgs[i].setAttribute('width', oriWidth);
                    svgs[i].setAttribute('height', oriHeight);
                }
            }
            recontainstyle();
        }
        function renavstyle() {
            var topHeight=conInfo.clientHeight;
            var scrollTop=document.body.scrollTop||document.documentElement.scrollTop;
            if(scrollTop>topHeight){
                document.getElementById('navBar').style.top=0+'px';
            }else{
                document.getElementById('navBar').style.top=topHeight-scrollTop+'px';
            }
            doscroll();
        }
        function doscroll() {
            var topHeight=conInfo.clientHeight;
            var scrollTop=document.body.scrollTop||document.documentElement.scrollTop;
            for(var i=0;i<svgcount;i++){
                var sum=0;
                for(var j=0;j<=i;j++){
                    sum+=heightArr[j];
                }
                if(scrollTop+window.innerHeight/2-topHeight-sum<0){
                    var sub=Number(i)+1;
                    if(document.querySelector('#nav-thumbs .selected')){
                        document.querySelector('#nav-thumbs .selected').classList.remove('selected');
                    }
                    document.querySelector('.nav-thumb:nth-of-type('+sub+')').classList.add('selected');
                    break;
                }
            }
        }
        var navs=document.querySelectorAll('.nav-thumb');
        for(i=0;i<navs.length;i++){
            navs[i].children[0].onclick=function () {
                document.querySelector('#nav-thumbs .selected').classList.remove('selected');
                this.parentNode.classList.add('selected');
            }
        }
</script>
  </body>
</html>
